查看原文
其他

关于容器监控,这3种工具你可能用得上

2017-08-03 马宝山译 数人云

识别二维码报名活动

8月19日,来自微软、数人云、京东、当当网的四位IT老兵,《一起吹响Container+集结号》,看Serverless、DevOps、微服务、CI/CD、分布式调度任务等技术,在各个场景中与Container发生的碰撞与交互。


数人云技术总监老庞在之前的文章中《解惑|你是否为容器监控操碎了心?》提到:没有监控如同闭眼开车,今天小数给大家分享三种工具,轻松搞定容器监控~


本文将介绍如何为DevOps/Docker环境创建一个有趣且包含时间时间序列指标的监控环境,使用Garafana作为展示仪表盘,数据库为influxDb,收集指标的工具有很多,如Collectd,Graphite等,这里选择Telegraf(InfluxData公司的产品)


安装Grafana

建立一个持久存储卷,可以保留升级版本、销毁重建Grafana容器时的配置。

# docker run -d -v /var/lib/grafana --name grafana-storage busybox:latest


创建并启动Grafana容器,此时已安装完毕等待配置。


#docker create \

--name = grafana \

-p 3000:3000 \

--volumes-from grafana-storage \

-e "GF_SECURITY_ADMIN_PASSWORD=<<you-password>>" \

grafana/grafana



Docker升级脚本

若没有Grafana容器的重新部署升级脚本,可参考:https://github.com/foxutech/devops


自动启动映像—创建Systemd启动脚本


#vi /lib/systemd/system/grafana.service

[Unit]

Description=grafana container

Requires=docker.service

After=docker.service

[Service]

User=foxutech

Restart=on-failure

RestartSec=45

ExecStart=/usr/bin/docker start -a grafana

ExecStop=/usr/bin/docker stop -t 2 grafana

[Install]

WantedBy=multi-user.target


设置开机启动。

#systemctl enable grafana.service


现在启动。

#systemctl start grafana


了解更多关于Linux上创建InfluxDB和Grafana容器,请参阅:http://foxutech.com/create-influxdb-and-grafana-containers-on-linux/



安装InfluxDB

创建本地存储,目的是避免在任何情况下容器被删除导致的数据丢失。


#mkdir -p / monitoring / influxdb / conf /

#mkdir -p / monitoring / influxdb / db /


检验文件夹所有者及读取权限(可选)


不是必备项,取决于创建上述文件夹使用的用户名及Linux发行版本,若想确保此路径由启动Docker服务的用户所有,请将下面命令中的User替换为实际用户名:

#chown user:user -R /docker


生成默认配置项

生成后仔细校验,一些重要的选项需要去注意。

#docker run --rm influxdb influxd config> /monitoring/influxdb/conf/influxdb.conf


创建并启动InfluxDB容器

# docker create \

--name influxdb \

-e PUID=1212 -e PGID=1212 \

-p 8083:8083 -p 8086:8086 \

-v /monitoring/influxdb/conf/influxdb.conf:/etc/influxdb/influxdb.conf:ro \

-v /monitoring/influxdb/db:/var/lib/influxdb \

influxdb -config /etc/influxdb/influxdb.conf

# docker start influxdb


创建测试数据库


查看本地 localhost:8083上的实例。下面需要创建测试的数据库,只需进入查询区域并输入:

CREATE DATABASE test


Docker升级脚本

若没有InfluxDB容器的重新部署升级脚本,可参考:https://github.com/foxutech/devops


自动启动映像—创建Systemd启动脚本


#vi /lib/systemd/system/grafana.service


[Unit]

Description=influxdb container

Requires=docker.service

After=docker.service

[Service]

User=foxutech

Restart=on-failure

RestartSec=45

ExecStart=/usr/bin/docker start -a influxdb

ExecStop=/usr/bin/docker stop -t 2 influxdb

[Install]

WantedBy=multi-user.target


设置开机启动

#systemctl enable influxdb.service


马上启动测试

#systemctl start influxdb


Docker统计

当Docker很快成为日常工作流程的一部分,为了快速部署常见部署和频繁升级常用包,同时保持配置文件和卷存储完整性,本文作者在单个服务器中的两台VM虚拟机上跑了近15个容器实例,启动新的软件实测最后移到垃圾箱没有任何痕迹。


为了实现这一点,要去部署Telegraf容器,实际上,它是大多数自定义脚本极好的替代品,如涉及到SNMP数据时,可以让Telegraf获取所有数据,并将数据发送到InfluxDB。


用Docker安装Telegraf

创建Docker卷存储位置

#mkdir -p / monitoring / telegraf /


生成默认配置文件

#docker run --rm telegraf -sample-config > /monitoring/telegraf/telegraf.conf

修改此文件以满足您的实际情况,在配置文件顶部是很多环境变量相关的选项。特别应查找这两项。

输出插件

# Configuration for influxdb server to send metrics to

[[outputs.influxdb]]

urls = ["http://localhost:8086"] # required

database = "telegraf" # required

precision = "s"

retention_policy = "default"

write_consistency = "any"timeout = "5s"


Docker 配置

[[inputs.docker]]

## Docker Endpoint

##   To use TCP, set endpoint = "tcp://[ip]: [port]"

##   To use environment variables (ie, docker-machine), set endpoint = "ENV"

#endpoint = "unix:///var/run/docker.sock"

#you may need to use the actual IP here

endpoint = "tcp://localhost:2375"

## Only collect metrics for these containers, collect all if empty

container_names = []

## Timeout for docker list, info, and stats commands

timeout = "30s"


Docker升级脚本

若没有Telegraf容器的重新部署升级脚本,可参考:https://github.com/foxutech/devops 


自动启动镜像 - 创建一个Systemd启动脚本

#vi /lib/systemd/system/telegraf.service

[Unit]

Description=telegraf container

Requires=docker.service

After=docker.service

[Service]

User=foxutech

Restart=on-failure

RestartSec=45Exec

Start=/usr/bin/docker start -a telegraf

ExecStop=/usr/bin/docker stop -t 2 telegraf

[Install]

WantedBy=multi-user.target


设置开机启动。

# systemctl enable telegraf.service


启动并测试。

# systemctl start telegraf


一旦Telegraf启动,您应该看到数据打入到InfluxDB数据库。


以上是用InfluxDB、Grafana、Telegraf这三种工具为容器创建时间序列指标的监控环境,当然,没有最好,只有最适合自身及团队的工具,做好监控,能及时并解决发生的问题,让应用处于最优的状态运行。


原文作者:motoskia

原文链接:http://foxutech.com/monitor-docker-environment/




推荐阅读:

实践|SRE遇上金融老干部,解决发布协调&监控告警两大难题

史上最全|35个平台、框架、数据库细说什么是Serverless

优势+工具+实践=DevOps&Docker的企业级落地

从0到1,打造DevOps易用工具链(精挑细选27种)



点击阅读原文,报名活动

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存